﻿using System;
using System.Collections.Generic;

namespace Model.Entities
{
    public class User : BaseEntity
    {
        #region Private Fileds

        private IList<DiaryMessage> _diaryMessages          = new List<DiaryMessage>();
        private IList<GroupMessage> _groupMessages          = new List<GroupMessage>();
        private IList<UserMessage>  _userSentMessages       = new List<UserMessage>();
        private IList<UserMessage>  _userReceivedMessages   = new List<UserMessage>();

        private IList<Group>        _ownedGroups   = new List<Group>();
        private IList<Group>        _groups        = new List<Group>();
        private IList<Interest>     _interests     = new List<Interest>();

        #endregion

        public virtual string   Email       { get; set; }
        public virtual string   Password    { get; set; }
        public virtual string   NickName    { get; set; }
        public virtual string   FullName    { get; set; }
        public virtual string   Job         { get; set; }
        public virtual DateTime BirthDay    { get; set; }

        public virtual IList<DiaryMessage> DiaryMessages
        {
            get { return _diaryMessages;  }
            set { _diaryMessages = value; }
        }

        public virtual IList<GroupMessage> GroupMessages
        {
            get { return _groupMessages;  }
            set { _groupMessages = value; }
        }

        public virtual IList<UserMessage> UserSentMessages
        {
            get { return _userSentMessages;  }
            set { _userSentMessages = value; }
        }

        public virtual IList<UserMessage> UserReceivedMessages
        {
            get { return _userReceivedMessages;  }
            set { _userReceivedMessages = value; }
        }

        public virtual IList<Interest> Interests
        {
            get { return _interests;  }
            set { _interests = value; }
        }

        public virtual IList<Group> Groups
        {
            get { return _groups;  }
            set { _groups = value; }
        }

        public virtual IList<Group> OwnedGroups
        {
            get { return _ownedGroups;  }
            set { _ownedGroups = value; }
        }
    }
}
